package com.yannan.lock.core.util;

import java.util.*;

public class ErrorMsgUtil {
	
	
	/**
	 * Description: 非空校验返回信息处理
	 * @param  errorList 非空校验返回信息
	 * @return String 返回处理好的校验信息
	 * @Author wu
	 * Create Date: 2016-8-10 上午10:28:15
	 */
	public static String createErrorMsg(List<String> errorList) {
		if (null != errorList && !errorList.isEmpty()) {
			StringBuffer errorSb = new StringBuffer();
			for(int i=0; i<errorList.size(); i++){
				if(i > 0){
					errorSb.append(", ");
				}
				errorSb.append(errorList.get(i));
			}
			return errorSb.toString();
		}
		return "";
	}

	/**
	 * Description: 非空校验判断并返回信息
	 * @param obj 需校验的对象
	 * @param propNames 校验的字段
	 * @param displayNames 字段名称
	 *  output 返回信息对象
	 * @throws Exception 校验必输项时出错
	 * @return boolean 校验成功，返回true，否则输出错误信息响应，并返回false
	 * @Author wu
	 * Create Date: 2016-8-10 上午10:28:15
	 */
	public static String valiMqInputMust(Object obj,String[] propNames,String[] displayNames) throws Exception{
		List<String> errorList = ValidateUtil.validateMust(obj, propNames, displayNames);
		if(errorList.size() > 0){
			String errorMsg = ErrorMsgUtil.createErrorMsg(errorList);
			return errorMsg;
		}else{
			return "";
		}
	}
	
	public static String valiRequsetMust(Map<String, String[]> requestMap,String[] propNames,String[] displayNames) throws Exception{
		List<String> errorList = ValidateUtil.validateRequestMap(requestMap, propNames, displayNames);
		if(errorList.size() > 0){
			String errorMsg = ErrorMsgUtil.createErrorMsg(errorList);
			return errorMsg;
		}else{
			return "";
		}
	}
	
	/**
	 * Description: Map中的key值必须属于propNames（除ignoreProps中的除外）
	 * @param map 需校验的map对象
	 * @param propNames 校验的字段
	 *  output 返回信息对象
	 * @param ignoreProps 忽略校验字段
	 * @return boolean 校验成功，返回true，否则输出错误信息响应，并返回false
	 * @Author wu
	 * Create Date: 2016-8-10 上午10:28:15
	 */
	public static String valiMqInputNotMust(Map<String, Object> map,String[] propNames,String ...ignoreProps){
		Set<String> ignoreSet = new HashSet<String>();
		if(null != ignoreProps){
			for (String ignorePorp : ignoreProps) {
				ignoreSet.add(ignorePorp);
			}
		}
		List<String> errorList = new ArrayList<String>();
		List<String> propList = Arrays.asList(propNames);
		for(String key : map.keySet()){
			if(!propList.contains(key) && !ignoreSet.contains(key)){
				errorList.add("参数 ("+key+") 输入有误!");
			}
		}
		if(errorList.size() > 0){
			String errorMsg = ErrorMsgUtil.createErrorMsg(errorList);
			return errorMsg;
		}else{
			return "";
		}
	}
	
	/*public static void main(String[] args) throws Exception {
		Map<String,Object> paramsMap = new HashMap<String, Object>();
		paramsMap.put("username", "11");
		String errorMsg = valiMqInputMust(paramsMap, new String[]{"username"}, new String[]{"用户名"});
		System.out.println(errorMsg);
	}*/
}